function formatDt(date) {
    const day = date.getDate().toString().padStart(2, '0');
    const month = (date.getMonth() + 1).toString().padStart(2, '0'); // 月份是从0开始的
    const year = date.getFullYear();
    const hours = date.getHours().toString().padStart(2, '0');
    const minutes = date.getMinutes().toString().padStart(2, '0');
    const seconds = date.getSeconds().toString().padStart(2, '0');

    return `${year}年${month}月${day}日 ${hours}时${minutes}分${seconds}秒`;
    // return `${year}-${month}-${day}`;
}

function canvasToBase64(text, opt){
    //水印内容
    var txt = text;//多行文本，用逗号(,)分割。
    if(!text) return false;
    var txtArr = txt.split(',');
    if(!opt){
        opt = {};
    }
    //水印配置：字体，字号，是否加粗，文本倾斜角度，文本颜色，水印图的宽高(必须大于文本宽高)
    var fontSize = opt.fontSize || 18;//单位：px，单行文本的字号
    var fontSizeArr = opt.fontSizeArr ? opt.fontSizeArr : [];//单位：px，多行文本的字号
    var lineHeight = opt.lineHeight ? opt.lineHeight : Math.floor(fontSize*1.5);//行高，默认为fontSize字号的1.5倍行高
    var fontFamily = opt.fontFamily || '宋体';//字体，默认宋体
    var fontWeight = opt.fontWeight || 'bold';//是否加粗，默认加粗
    fontWeight = "";
    var angle = opt.angle || -45;//文本倾斜角度，默认-45deg
    var fontColor = opt.fontColor || '#d9d9d9';//文本颜色，默认'#d9d9d9'
    var width = opt.width || 200;//画布canvas宽度，单位px，默认200
    var height = opt.height || 200;//画布canvas高度，单位px，默认200

    var txtHeight = lineHeight*(txtArr.length)- (lineHeight-fontSize);//文字高度，因为文字垂直方向是top，高度需要减掉最后一行文本的多余行间距：lineHeight-fontSize
    // var canvas = document.getElementById("myCanvas");//本地调试效果用
    var canvas = document.createElement('canvas');
    canvas.width = width;
    canvas.height = height;
    var context = canvas.getContext("2d");
    // 设置字体
    context.font = fontWeight+' '+fontSize+'px '+fontFamily;//比如："bold 20px 宋体"
    // 设置水平对齐方式
    context.textAlign = 'left';//left,center,right
    // 设置垂直对齐方式
    context.textBaseline = 'top';//top,bottom,middle

    //不旋转，参考用
    // var angle = -45;
    var strWidth = context.measureText(txt).width;
    var strWidthArr = [];
    txtArr.forEach(function(txt, index){
        var tempW = Math.ceil(context.measureText(txt).width);//向上取整，保证无小数
        strWidthArr.push(tempW);
    });
    console.log('文字块：',strWidthArr);
    strWidth = Math.max.apply(null,strWidthArr);
    console.log("文字块宽高:"+strWidth+','+txtHeight);
    context.save();
    var tx = (canvas.width - strWidth)/2;
    var ty = (canvas.height - txtHeight)/2;//字号等于行高

    //中心位置旋转
    context.save();
    //p0 画布起始点（0,0），p1 canvas画布中心点（canvas.width/2, canvas.height/2），p2 文本块最终位置的左上角那个店（x2,y2）未知的需计算
    var p1p2 = Math.sqrt(Math.pow(strWidth/2,2)+Math.pow(txtHeight/2,2));//文本块左上角，中心点连线长度
    var p1p2Angle = (Math.atan(strWidth/txtHeight)*180/Math.PI-(90-Math.abs(angle)))*Math.PI/180;//文本块左上角，中心点连线和水平轴x的角度
    console.log('文本块left-center连线: length：'+p1p2+',angle(PI):'+p1p2Angle);
    tx = (canvas.width/2)-Math.cos(p1p2Angle)*p1p2;
    ty = (canvas.height/2)+Math.sin(p1p2Angle)*p1p2;
    console.log('p2:('+tx+','+ty+')');
    // ty = 334;
    context.translate(tx, ty);
    context.rotate(angle * Math.PI / 180);//先移动translate,再旋转rotate，就是以文本原点为基点，如果先旋转再移动，就是以画布canvas原点为基点
    context.fillStyle = fontColor;
    var y = 0;
    var x = 0;
    txtArr.forEach(function(txt, index){
        if(fontSizeArr.length==txtArr.length){
            //如果每行文本的字号不一样
            var tempFontSize = fontSizeArr[index];
            context.font = fontWeight+' '+tempFontSize+'px '+fontFamily;//比如："bold 20px 宋体"
        }
        x = (strWidth - strWidthArr[index])/2;
        context.fillText(txt, x, y + lineHeight * index);
    });

    // context.fillText(txt, 0, 0);//单行文字
    context.restore();

    // 生成图片信息
    return canvas.toDataURL('image/png');
}

function watermark(text, w=220, h=220) {
    $.ajax({
        type: "post",
        url: "../../mobile/getConfig",
        data: {
        },
        dataType: "json",
        success: function (res, status) {
            console.log('res', res);
            if (res.code == 200) {
                var data = res.data;
                if (data.isWatermark) {
                    text += ' ' + formatDt(new Date());
                    // 多行文本：逗号,分割，如：'平台,编号：20240610'
                    var photoUrl = canvasToBase64(text,{
                        width: w,
                        height: h,
                        fontSize: 14,
                        angle: -25,
                        // fontSizeArr: [18,20,18],//多行文本，每行文字字号不一样时配置
                        // lineHeight: 30,//默认为字号的1.5倍行高
                        // fontColor: '#f00',
                    });

                    $('body').append('<div class="watermark"></div>');
                    $('.watermark').attr('style','display:block;background-image:url('+photoUrl+');background-size:' + w + 'px ' + h + 'px');
                }
            }
        },
        error: function (XMLHttpRequest, textStatus) {
            //alert(XMLHttpRequest.responseText);
        }
    })
}

function isDingTalk() {
    if (window.navigator) {
        if (/dingtalk/i.test(window.navigator.userAgent))
            return true;

        if (window.navigator.userAgent.match(/TaurusApp/i)) {
            // console.log("从专有钉钉来的");
            return true;
        }
    } else {
        return false;
    }
}

// 不包含
if (typeof String.prototype.notIncludes !== 'function') {
    String.prototype.notIncludes = function(str) {
        return !this.includes(str);
    };
}